/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.uca.dss.curso2011.grupo1.interfazExtendido;

import java.util.ArrayList;
import java.util.List;
import org.joda.time.LocalDate;
import org.uca.dss.curso2011.grupo1.clases.RepartoAsientos;
import org.uca.dss.curso2011.grupo1.clases.Reserva;
import org.uca.dss.curso2011.grupo1.interfaz.Compras;
import org.uca.dss.curso2011.grupo1.interfaz.Estado;

/**
 * Clase que realiza la implementacion del criterio de asignacion de asientos.
 * @author David & Alejandro
 */
public class CriterioAsientosDiferentes implements CriterioAsientos{

    public List<ReservaTrayecto> reservar(Itinerario itinerario,Estado estado, LocalDate fecha, Compras compras, RepartoAsientos repartoAsiento) {

        List<ReservaTrayecto> reservas = new ArrayList<ReservaTrayecto> ();
        
        //Obtenemos los codigos de las reservas de los trayectos.
        for(InformacionTrayecto informacionTrayecto: itinerario){
            String codigoReserva = compras.reservaAsiento(informacionTrayecto.getOrigen(),
                                                          informacionTrayecto.getDestino(),
                                                          fecha,
                                                          informacionTrayecto.getHoraSalida());
            //Creamos la ReservaTrayecto.
            for(Reserva reserva: estado.obtieneReservas()){
                if(reserva.obtieneCodigoReserva().equals(codigoReserva)){
                    reservas.add(new ReservaTrayecto(informacionTrayecto,fecha,reserva.obtieneAsiento(),codigoReserva));
                }
             }
            
           
        }
        return reservas;
    }
}
